vec2 fixUV(vec2 cood){
  return 3.*(2.*cood.xy-iResolution.xy)/min(iResolution.x,iResolution.y);
}

void mainImage(out vec4 fragColor,in vec2 fragCoord){
  vec2 vUv=fixUV(fragCoord);
  
  vec3 color=vec3(0.);
  // if(abs(vUv.y)<.1){
    //   color.x=1.;
  // }
  // if(abs(vUv.x)<.1){
    //   color.y=1.;
  // }
  // 这种画1px线的方式不合理，不稳定，x或y的0.001有时太小就不展示
  // if(abs(vUv.y)<.001){
    //   color.x=1.;
  // }
  // if(abs(vUv.x)<.001){
    //   color.y=1.;
  // }
  
  // 先画网格再画坐标轴，免得坐标轴被遮住
  // fract取小数部分，相当于使范围一直重复在0～1之间，相当于mod(vUv, 1.0)
  vec2 cell=fract(vUv);
  // vec2 cell=mod(vUv,1.);
  // fragColor=vec4(cell,0,1);
  
  if(cell.x<=fwidth(vUv.x)){
    color=vec3(1.);
  }
  if(cell.y<=fwidth(vUv.y)){
    color=vec3(1.);
  }
  
  // 换成用fwidth函数来画细线
  if(abs(vUv.y)<fwidth(vUv.y)){
    // color.r=1.;
    color=vec3(1.,0.,0.);
  }
  if(abs(vUv.x)<fwidth(vUv.x)){
    // 此处如下设置无效，应为上面这条线上的color已经被设置成了vec(1.0,1.0,1.0)
    // color.g=1.;
    // 所以直接改成绿色就好
    color=vec3(0.,1.,0.);
  }
  fragColor=vec4(color,1);
}

// 上面画格子有点问题，明显看出x轴方向上，绿线和白线没对齐，白线在绿线右侧，把右侧空间挤小了，使右侧最右边线没画出来。
// 原因是都是从0到1之间画线，没有从-1到0之间画线，所以线都画到了0的右侧。
// 接下来进一步优化